#ifndef __reader__
#define __reader__
class reader {
    Environment env;
    std::string str;
    int index;
    bool get_str();
    bool isnum();
    bool isesc();
    std::string get_name();
    Object read_num();
    Object read_sym();
    Object escape();
    Object read_str();
    Object read_list();
    Object read_decomp(Object);

public:
    reader(Environment e): env(e), index(0) { }
    Object get();
};
typedef boost::shared_ptr<reader> Reader;
#endif
